package org.type4neo;

import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;

/**
 * Represents a {@link GraphDatabaseService} that has strong typing.
 * 
 * @author pragone
 * 
 */
public interface TypedGraphDatabaseService extends GraphDatabaseService {

	/**
	 * This method has been deprecated for Typed Graphs in favor of {@link #createNodeAs} 
	 * 
	 * @deprecated Use {@link #createNodeAs} instead
	 */
	@Deprecated
	public Node createNode();
	
    /**
     * Creates a new node and associates it with the given <code>interfaceClass</code>
     * 
     * @param interfaceClass Class object of an interface that extends {@link TypedNode}
     * @return the created node.
     */
    public TypedNode createNodeAs(Class<? extends TypedNode> interfaceClass);
}
